package com.seanzx.dp.common;

import com.seanzx.common.Lists;
import com.seanzx.dp.entity.Table;
import com.seanzx.dp.entity.Column;

public class MetaTables {
    private static final Table TABLES = Table.builder().tableSchema(Consts.INFORMATION_SCHEMA).name("TABLES").columns(
            Lists.of(Column.builder().tableSchema(Consts.INFORMATION_SCHEMA).tableName("TABLES").name("TABLE_SCHEMA")
                            .type(ColumnType.VARCHAR).length(64).index(0).build(),
                    Column.builder().tableSchema(Consts.INFORMATION_SCHEMA).tableName("TABLES").name("TABLE_NAME")
                            .type(ColumnType.VARCHAR).length(64).index(1).build())
    ).build();

    private static final Table COLUMNS = Table.builder().tableSchema(Consts.INFORMATION_SCHEMA).name("COLUMNS").columns(
            Lists.of(
                    Column.builder().tableSchema(Consts.INFORMATION_SCHEMA).tableName("COLUMNS").name("TABLE_SCHEMA")
                            .type(ColumnType.VARCHAR).length(64).index(0).build(),
                    Column.builder().tableSchema(Consts.INFORMATION_SCHEMA).tableName("COLUMNS").name("TABLE_NAME")
                            .type(ColumnType.VARCHAR).length(64).index(1).build(),
                    Column.builder().tableSchema(Consts.INFORMATION_SCHEMA).tableName("COLUMNS").name("COLUMN_NAME")
                            .type(ColumnType.VARCHAR).length(64).index(2).build(),
                    Column.builder().tableSchema(Consts.INFORMATION_SCHEMA).tableName("COLUMNS").name("COLUMN_TYPE")
                            .type(ColumnType.VARCHAR).length(64).index(3).build(),
                    Column.builder().tableSchema(Consts.INFORMATION_SCHEMA).tableName("COLUMNS").name("COLUMN_LENGTH")
                            .type(ColumnType.UNSIGNED_INT).length(11).index(4).build(),
                    Column.builder().tableSchema(Consts.INFORMATION_SCHEMA).tableName("COLUMNS").name("COLUMN_INDEX")
                            .type(ColumnType.UNSIGNED_INT).length(11).index(5).build()
            )
    ).build();

    public static Table tables() {
        return TABLES;
    }

    public static Table columns() {
        return COLUMNS;
    }
}
